{{tag>carte_graphique amd-ati catalyst}}

----
====== Le pilote libre Radeon ======


Le pilote libre Radeon est dédié au support de certaines carte graphique ATI/AMD. Il se présente comme une alternative crédible au pilote propriétaire fourni par le constructeur.\\
En effet, suite au rachat de ATI par AMD, les spécifications techniques des cartes sont maintenant en accès libre. Cela a permis à la communauté d'accélérer la création de différents pilotes entièrement libre dont la famille Radeon.

Le pilote libre Radeon se charge par défaut, au moment du démarrage, quand une carte ATI/AMD supportée est détectée. Mais ce pilote peut facilement être remplacé par le pilote propriétaire fourni par le constructeur en allant dans les //paramètres système -> Pilotes additionnels//. Effectivement, le driver libre ne couvre pas encore la totalité des fonctionnalités fournies par le pilote ATI/AMD, notamment dans le domaine de la 3d. Le retard est variable en fonction du type de carte et de la version du pilote. 

À noter que le développement des pilotes est très dynamique et que ce retard se comble rapidement. Et chaque nouvelle version d'Ubuntu apporte la dernière version du pilote stable et le lot de nouveautés et de corrections qui vont avec.

<note tip>AMD vient de publier le code source de l'UVD (Unified Video Decoder ) à la communauté Open source le 11 Avril 2013. Ainsi, la prise en charge complète de l'accélération matérielle sera disponible à partir du noyau 3.10.</note> 


===== Connaître sa carte graphique =====

==== Identifier sa carte graphique avec lspci ====

Pour  cela il suffit de taper dans votre [[:terminal]]:
<code>lspci -nn | grep VGA</code>
La commande doit renvoyer quelque chose dans ce style:
<code>01:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RV670 [Radeon HD 3870] [1002:9501]</code>
Ici la carte est donc une Radeon HD 3870 équipée d'une puce RV670, le dernier chiffre (9501) étant l'identifiant (ID) de la carte.

Pour savoir dans quelle famille de driver se trouve votre carte, reportez-vous à [[http://wiki.x.org/wiki/RadeonFeature#Decoder_ring_for_engineering_vs_marketing_names|ce tableau]]. Ici il s'agit donc du driver R600 qui s'occupe de la puce RV670. Et en fonction de cela, vous pouvez savoir quelles sont les fonctionnalités supportées par le tout dernier pilotes, en lisant la page [[http://wiki.x.org/wiki/RadeonFeature|Radeon Feature]]

==== Plus d'informations sur les capacités supportées avec glxinfo ====
La commande glxinfo va aussi vous permettre de récupérer des infos intéressantes:
<code>glxinfo</code>
<code>
direct rendering: Yes  \\(support de l'accélération graphique Oui)
OpenGL vendor string: X.Org \\(notre bienfaiteur, la fondation X.org)
OpenGL renderer string: Gallium 0.4 on AMD RV670 \\(Gallium embarque le pilote radeon)
OpenGL version string: 2.1 Mesa 8.0.2 \\(la version de Mesa et le support complet de OpenGL 2.1)
OpenGL shading language version string: 1.20 \\(La version de glsl supportée) </code>

Ainsi qu'un détail des extensions [[wpfr>OpenGL]] utilisables par votre carte:

<code>OpenGL extensions:
    GL_ARB_multisample, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color, 
    GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_copy_texture ......</code>
Certaines font déjà partie des spécifications d'OpenGL 3, mais comme il en manque quand même, le support complet n'est valable que pour la version 2.1.

À noter que certain logiciel ou jeux peuvent ne pas se charger parce qu’il manque une extension. Cette liste vous aidera peut être à trouver laquelle.

==== Et aussi ====

  * Il existe un [[:man|manuel]] pour les pilotes radeon accessibles en tapant:<code>man radeon</code>
  * Le version du paquet incorporant les pilotes se trouve en tapant: <code>apt-cache show xserver-xorg-video-ati</code>

===== Installer une version plus récente des pilotes =====
<note important> Attention, la suite comporte des risques et peut provoquer des crashs.</note>

==== Installer une version plus récente à l'aide d'un PPA ====

Dans le cas où vous souhaiteriez tester une version plus récente mais instable des pilotes, il est possible d'[[:PPA|ajouter le dépôts PPA]] **ppa:xorg-edgers/ppa** (([[https://launchpad.net/~xorg-edgers/+archive/ppa]])).\\
Ce [[:dépôts|dépôt]] comprend les dernières versions des pilotes libres radeon (xserver-xorg-video-ati), Nouveau, Intel, ainsi que Mesa (OpenGL), et xorg et bien d'autres paquets liés au support des cartes graphiques. \\ Ce dépôt comporte beaucoup d'éléments instables, c'est donc à vos risques et périls.
Avec l'outil [[:apt-get]] vous saisirez :
  *Ajout du dépôt:<code>sudo add-apt-repository ppa:xorg-edgers/ppa</code>
  *Mise à jour de la liste des paquets:<code>sudo apt-get update</code>
  *Installation des mises à jours:<code>sudo apt-get upgrade</code>
  *Redémarrez à la fin de la mise à jour

Sachez qu'il est possible de revenir en arrière avec la commande ppa-purge.
<code>sudo ppa-purge xorg-edgers</code>

==== Installer la version Git ====
 
[[:Git|Git]] vous permet de bénéficier des dernières modifications de radeon et donc d'une quantité importante de nouvelles fonctionnalités et corrections de BUGS. Cependant, de nouveaux BUGS peuvent être introduits. Cette méthode d'installation est donc réservée aux utilisateurs avancés, testeurs et autres enthousiastes. 

<note important>Depuis que la version git nécessite //xorg-macros// version 1.8, pour pouvoir [[:compilation|compiler]] sous [[:lucid|Ubuntu 10.04]], il faut préalablement installer le paquet **xutils-dev_7.5+4_i386.deb**  disponible [[https://launchpad.net/ubuntu/+archive/primary/+files/xutils-dev_7.5%2B4_i386.deb|ici]]</note>

Avant de pouvoir installer la "version git", il faut s'assurer que les paquets suivants soient bien installés sur le système :

[[:tutoriel:comment_installer_un_paquet|Installez les paquets]] **[[apt>build-essential,git-core,configure-debian,automake,autoconf,xorg-dev,libtool,libdrm-dev,mesa-common-dev,xutils-dev|build-essential git-core configure-debian automake autoconf xorg-dev libtool libdrm-dev mesa-common-dev xutils-dev]]**\\
soit pour les adeptes de la ligne de [[:commande_shell|commande]] avec l'outil [[:apt-get]] :
<code>sudo apt-get install build-essential git-core configure-debian automake autoconf xorg-dev libtool libdrm-dev mesa-common-dev xutils-dev xutils</code>

Ensuite, il faut récupérer la dernière version du pilote grâce à GIT
<code>git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-ati</code>

puis la compiler :
<code>
cd xf86-video-ati/; ./autogen.sh --prefix=/usr; make; sudo make install </code>

===== Configuration de l'affichage =====
À une époque il était courant de modifier le fichier **/etc/X11/xorg.conf** pour activer une option ou ajouter un second moniteur. Mais depuis quelques versions d'Ubuntu ce fichier de configuration de [[:Xorg]] est divisé en plusieurs morceaux et de nombreuses options ne sont plus fonctionnelles.\\
Il est maintenant conseillé d'utiliser la librairie [[:xrandr]] qui permet d'ajouter un moniteur ou de tourner l'affichage de son écran en quelques commandes.

==== Purger une installation non fonctionnelle ====

Vues les difficultés que posent encore les cartes graphiques, difficultés qui se contournent souvent pas des manipulations à la main, il arrive régulièrement que l'on se retrouve à nouveau dans une situation graphique non fonctionnelle. Cela arrive en particulier lors de migration d'une version d'Ubuntu à une autre. 
Le pilote libre [[:radeon]] offrant des performances de plus en plus satisfaisante, il est intéressant de l'essayer à nouveau dans une telle situation, puisqu'il est libre, maintenu par la communauté et se mettra donc à jour automatiquement via le gestionnaire de paquets. Le paragraphe suivant propose de purger toutes 
les tentatives d'installations de pilotes précédentes, de configurer correctement le pilote [[:radeon]] et de relancer le serveur graphique. Les commandes supposent que vous utilisez [[:lightdm]] comme [[::fenetre_de_connexion]], ce qui est le cas par défaut. 
Le fichier de configuration du Display Manager est **/etc/X11/default-display-manager** que l'on peut afficher avec la commande
<code> cat /etc/X11/default-display-manager</code>
Si votre [[::fenetre_de_connexion]] n'est pas [[:lightdm]], remplacer les lignes correspondantes en conséquence. 

Pour réaliser cette opération, voici la démarche. Passer en session terminale tty1 en appuyant simultanément sur <ctrl>+<alt>+<F1>. Renseignez votre login et mot de passe. 
À partir de là, vous pouvez stopper votre serveur graphique qui se trouve lui en <ctrl>+<alt>+<F7> :
<code>sudo service lightdm stop</code>
Supprimer toutes les possibles installations préalables de drivers pour votre carte AMD-ATI. Avant de lancer la première commande, vérifier que le dossier **/usr/share/ati/** existe par 
<code>cd /usr/share/ati/</code> Si tel n'est pas le cas, alors vous n'avez pas besoin de lancer cette commande. 
<code>
sudo sh /usr/share/ati/fglrx-uninstall.sh
sudo apt-get remove --purge fglrx*
sudo apt-get remove --purge xserver-xorg-video-ati xserver-xorg-video-radeon  
sudo apt-get install xserver-xorg-video-radeon
sudo apt-get install --reinstall libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core 
sudo dpkg-reconfigure xserver-xorg
</code>
Nous allons maintenant générer un nouveau **xorg.conf**. Pour cela, commencer par sauvegarder la version courante de ce fichier (on ne sait jamais) :
<code>sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak</code>
puis déplacez vous dans un endroit où vous avez tous les droits, par exemple votre **/home**
<code>cd </code>
et lancer la commande de configuration du **xorg.conf**
<code>sudo Xorg -configure</code>
En cas de message d'erreur ne permettant pas d'exécuter cette commande, supprimer le fichier à l'origine de ce blocage: 
<code>sudo rm /tmp/.X0-lock</code>
Puis réexécuter la commande précédente, qui devrait vous avoir généré un fichier nommé **xorg.conf.new** à l'endroit même, même si la commande a terminé par une erreur. 
Il vous faut maintenant éditer ce fichier pour vous assurer qu'il n'y a qu'une seule **section "Device"** qui pointe vers le driver [[:radeon]]
<code>
[...]
Section "Device"
    [...]
    Driver        "radeon"
EndSection
</code>
Enfin, placez le nouveau fichier **xorg.conf** au bon endroit
<code>sudo cp xorg.conf.new /etc/X11/xorg.conf</code>
et relancer le serveur graphique
<code>sudo service lightdm start</code>
===== Gestion de l'énergie/performance=====

Il y a maintenant moyen d'avoir une gestion de l'énergie assez efficace et comparable à celle du pilote propriétaire grâce au KMS (Kernel-based mode-setting).

Trois méthodes s’offrent à vous:

==== Gestion dynamique matérielle ====

<note important>Attention, vous avez besoins du noyaux linux 3.11 et de firmwares récents pour utiliser cette méthode (donc Ubuntu 13.10 ou plus récent)</note>

Cette méthode ne fonctionne qu'à partir des cartes HD200 (r600) et plus récentes. Elle utilise la gestion de l'énergie au niveau matériel, ce qui peut entraîner un gain de performance et une baisse de la consommation énergique. Cette méthode permet quelques fois d'obtenir des températures équivalentes à celle du pilote propriétaire, mais aussi plus basses que dans le cas des autres méthodes utilisées.

Pour activer le dpm, il faut activer son support dans le noyaux.

<note warning>Attention, on modifie ici des options de démarrage, une manipulation non compatible peut empêcher votre machine de démarrer.</note>

Vous pouvez le faire en ajoutant la commande "radeon.dpm=1" au fichier de configuration  /etc/default/grub:

[[:tutoriel:comment_modifier_un_fichier|Ouvrez le fichier]] **/etc/default/grub** avec des droits d'administration.

Repérez la ligne
<code>GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"</code>

Modifiez la en:
<code>GRUB_CMDLINE_LINUX_DEFAULT="quiet splash radeon.dpm=1"</code>

Puis enregistrez.

Il reste alors à mettre grub à jour:
<code>sudo update-grub</code>

L'effet serra actif au prochain démarrage.

==== Gestion dynamique logicielle ====

La méthode dynamique "dynpm" est plus moderne et plus efficace que celle par profiles. Elle ne fonctionne pas sur toutes les cartes graphiques.
Elle modifie dynamiquement les fréquences (ram + core) et le voltage de la carte.

Pour le rendre automatique au démarrage, vous pouvez commencer par créer un fichier dans init.d:

[[:tutoriel:comment_modifier_un_fichier|Créez le fichier]] **/etc/init.d/ati-power-save** avec des droits d'administration.

Vous ajoutez ces lignes dans le fichier:

 <code>#!/bin/sh
 
# ATI power save
echo dynpm > /sys/class/drm/card0/device/power_method</code>

Vous l'enregistrez puis le rendez exécutable:

 <code>sudo chmod +x /etc/init.d/ati-power-save </code>

Il reste à créer les liens qui permettrons au script d'être exécuté à chaque démarrage:

 <code>sudo update-rc.d ati-power-save defaults 99 </code>

==== Gestion de l'énergie par profils ====

La méthode par profils est basée sur 5 profils de gestion plus basiques mais qui fonctionne sur une gamme de matériel plus large.

Les 5 profils sont:
  * "default": Horloges et voltages par défaut (option que vous avez si vous ne faites rien)
  * "auto": Passer en mode "high" quand le système est sur secteur et "mid" quand il est sur batterie.
  * "low": Force les fréquences et voltages les plus bas. Peut poser des problèmes sur certains matériels car il correspond au mode d'affichage dpms innactif
  * "mid": Force un mode de puissance moyenne.
  * "high": Force les fréquences et voltages au plus haut accessible (sans overclocking).

Pour le rendre automatique au démarrage, vous commencer par créer un fichier dans init.d:

[[:tutoriel:comment_modifier_un_fichier|Créez le fichier]] **/etc/init.d/ati-power-save** avec des droits d'administration.

Vous y ajoutez ensuite les lignes:

 <code>#!/bin/sh
 
# ATI power save
echo profile > /sys/class/drm/card0/device/power_method
echo low > /sys/class/drm/card0/device/power_profile</code>

(remplacez low par le mode voulu).

Vous l'enregistrez puis le rendez exécutable:

 <code>sudo chmod +x /etc/init.d/ati-power-save </code>

Il reste à créer les liens qui permettrons au script d'être exécuté à chaque démarrage:

 <code>sudo update-rc.d ati-power-save defaults 99 </code>




Les commandes contenues dans les scripts peuvent êtres utilisées seules pour un effet jusqu'à extinction de la machine.



Sources pour l’économie d'énergie:

  * **(en)** [[http://xorg.freedesktop.org/wiki/RadeonFeature/|Radeon Features]]

  * **(en)** [[http://www.phoronix.com/scan.php?page=news_item&px=MTQyNDE|Méthode dpm]]
  * **(en)** [[http://www.techytalk.info/ubuntu-open-source-ati-radeon-driver-power-usage-tweaks/|Méthodes dynpm et profiles]]

===== Liens externes =====

  * **(fr)**[[wpfr>Radeon]]
  * **(en)**[[http://dri.freedesktop.org/wiki/Radeon|Portail Radeon]] sur le site de la fondation freedesktop
  *  **(en)**[[http://www.x.org/wiki/RadeonFeature|La liste des fonctionnalités supportées par type de carte]]
  * **(en)**[[http://developer.amd.com/download/pc_vendor_id/pages/default.aspx|Liste de modèle/puce/ID officielle]]
  * **(en)**[[http://wiki.x.org/wiki/Radeon%20ASICs|Liste de Famille/modèle/ID]]
  * **(en)**[[http://www.pcidatabase.com/|Site]] pour identifier le modèle en fonction de l'identifiant du device
  * **(en)**[[http://phoronix.com/forums/forumdisplay.php?43-Open-Source-AMD-ATI-Linux|Forum spécialisé open-source AMD/ATI linux]] sur le site phoronix
  * **(en)**[[http://cgit.freedesktop.org/mesa/mesa/tree/docs/GL3.txt|Site]] pour suivre l'avancement du support OpenGL 3 et suivant
  * **(en)**[[http://cgit.freedesktop.org/mesa/mesa/log/|Site]] pour suivre l'évolution des différents pilotes.
  * **(en)**[[http://www.techytalk.info/ubuntu-open-source-ati-radeon-driver-power-usage-tweaks/|Ubuntu open source ATI radeon driver power usage tweaks]]. Si le GPU de votre radéon HD s'emballe ainsi que son ventilateur.
  * **(en)**[[http://notes.richdougherty.com/2012/03/ati-radeon-gpu-power-management-in.html|ATI Radeon GPU power management in Ubuntu Natty]]. Même sujet que le lien précédent.

----
 //Contributeurs : [[utilisateurs:Stemp]], [[utilisateurs:Id2ndR]], Neothor, [[utilisateurs:_Enchained]], [[utilisateurs:Smarter]], quent57, [[utilisateurs:mAx0r1311]] , Réécriture compléte juillet 2012: [[utilisateurs:kao_chen]]//